package com.ruoyi.system.service;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result;
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.system.domain.BaseArea;
import com.ruoyi.system.domain.BaseContest;
import com.ruoyi.system.domain.BaseContestBindingGroup;
import com.ruoyi.system.domain.bm.BMCoach;
import com.ruoyi.system.domain.bm.BMPayment;
import com.ruoyi.system.domain.bm.BMPlayer;
import com.ruoyi.system.domain.bm.BMTeam;
import com.ruoyi.system.domain.bm.dto.CoachOrPlayerAuditDTO;
import com.ruoyi.system.domain.bm.dto.CoachOrPlayerListDTO;
import com.ruoyi.system.domain.bm.dto.CoachOrPlayerListReturnDTO;
import com.ruoyi.system.domain.bm.dto.GetOrderStatusDTO;
import com.ruoyi.system.domain.dto.H5.NewContestListDto;
import com.ruoyi.system.domain.dto.Web.ContestBindingDto;
import com.ruoyi.system.domain.vo.H5.NewContestListVO;

/**
 * 联赛Service接口
 * 
 * @author wangbj
 * @date 2024-04-16
 */
public interface IBaseContestService extends IService<BaseContest>
{
    /**
     * 查询联赛
     * 
     * @param id 联赛主键
     * @return 联赛
     */
    public BaseContest selectBaseContestById(Long id);

    /**
     * 查询联赛列表
     * 
     * @param baseContest 联赛
     * @return 联赛集合
     */
    public List<BaseContest> selectBaseContestList(BaseContest baseContest);

    /**
     * 新增联赛
     * 
     * @param baseContest 联赛
     * @return 结果
     */
    public BaseContest insertBaseContest(BaseContest baseContest);

    /**
     * 修改联赛
     * 
     * @param baseContest 联赛
     * @return 结果
     */
    public int updateBaseContest(BaseContest baseContest);

    /**
     * 批量删除联赛
     * 
     * @param ids 需要删除的联赛主键集合
     * @return 结果
     */
    public int deleteBaseContestByIds(Long[] ids);

    /**
     * 删除联赛信息
     * 
     * @param id 联赛主键
     * @return 结果
     */
    public int deleteBaseContestById(Long id);

    List<BaseContest> gerMyList(Long userid);

    /**
     * 修改联赛状态
     * @param baseContest
     * @return
     */
    int auditStatus(BaseContest baseContest);

    /**
     * 获取联赛列表
     * @param baseContest
     * @return
     */
    List<BaseContest> selectList(BaseContest baseContest);

    /**
     * 上传大屏轮播图
     * @param baseContest
     * @return
     */
    int saveImg(BaseContest baseContest);
    /**
     * 查询联赛绑定列表
     * @param
     * @return
     */
    List<BaseContest> getContestBinding(BaseContest baseContest);
    /**
     * 添加联赛绑定
     * @param contestBindingDto
     * @return
     */
    int contestBinding(ContestBindingDto contestBindingDto);

    /**
     * token获取我的球队列表
     * @return
     */
    List<BMTeam> myTeam(Integer indexId);

    /**
     * 获取教练列表
     * @param teamId
     * @return
     */
    List<BMCoach> coachList(Long teamId);

    /**
     * 获取球员列表
     * @param teamId
     * @return
     */
    List<BMPlayer> playerList(Long teamId);

    /**
     * 创建球队
     * @param team
     * @return
     */
    BMTeam createTeam(BMTeam team);

    /**
     * 修改球队
     * @param team
     * @return
     */
    BMTeam editTeam(BMTeam team);


    /**
     * 查询球队详细信息
     * @param teamId
     * @return
     */
    BMTeam teamDetail(Long teamId);

    /**
     * 创建教练
     * @param coach
     * @return
     */
    WxPayUnifiedOrderV3Result.JsapiResult createCoach(BMCoach coach);

    /**
     * 创建球员
     * @param player
     * @return
     */
    WxPayUnifiedOrderV3Result.JsapiResult createPlayer(BMPlayer player);

    /**
     * 获取状态
     * @param param
     * @return
     */
    BMPayment getOrderStatus(GetOrderStatusDTO param);

    /**
     * 查询报名系统教练or球员列表
     * @param dto
     * @return
     */
    List<CoachOrPlayerListReturnDTO> coachOrPlayerList(CoachOrPlayerListDTO dto);

    int deleteCoach(Long id);

    int deletePlayer(Long id);

    /**
     * 审核系统教练or球员
     * @param param
     * @return
     */
    String coachOrPlayerAudit(CoachOrPlayerAuditDTO param);

    /**
     * 获取省份下拉框
     * @return
     */
    List<BaseArea> provinceList();

    /**
     * 查询联赛分组列表
     * @return
     */
    List<BaseContestBindingGroup> getContestBindingGroupList();

    /**
     * 查询分组内的联赛列表
     * @param contestBindingGroup
     * @return
     */
    List<BaseContest> getContestBindingList(BaseContestBindingGroup contestBindingGroup);

    /**
     * 删除联赛分组
     * @param id
     * @return
     */
    int deleteContestBindingGroup(Long id);

    /**
     * 新增联赛分组
     * @param baseContestBindingGroup
     * @return
     */
    int addContestBindingGroup(BaseContestBindingGroup baseContestBindingGroup);

    /**
     * 联赛绑定 新
     * @param contestBindingDto
     * @return
     */
    int contestBindingNew(ContestBindingDto contestBindingDto);

    /**
     * 球员 球队总和付款
     * @param team
     * @return
     */
    WxPayUnifiedOrderV3Result.JsapiResult totalPlayerPay(BMTeam team);

    /**
     * 新联赛列表
     * @param dto
     * @return
     */
    TableDataInfo newContestList(NewContestListDto dto);
}
